home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 January: Mac OS SDK / Dev.CD Jan 96 SDK / Dev.CD Jan 96 SDK1.toast / Development Kits (Disc 1) / AOCE / Development Tools / Sample Code / Messaging Service Access Module / Internet PMSAM / Internet PMSAM source / myevents.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-09  |  3.3 KB  |  167 lines  |  [TEXT/MPS ]

  1. /*-------------------------------------------------------------------
  2.  
  3. AOCE Post Office Protocol (POP) / Simple Mail Transfer Protocol (SMTP)
  4. Mail Service Access Module
  5.  
  6. written by Steve Falkenburg-- MacDTS
  7. ©1991-1993 Apple Computer, Inc.
  8.  
  9. --------------
  10. change history
  11. --------------
  12.  
  13. SJF        02/19/93    update for beta build    b1
  14. SJF        10/29/92    update to a11            a11
  15. SJF        06/08/92    update to a8            a8
  16. SJF        02/15/92    first working version    a4.5
  17. SJF        10/16/91    initial coding            a3
  18.  
  19. ---------------------------------------------------------------------*/
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24.  
  25. #ifndef __MEMORY__
  26. #include <Memory.h>
  27. #endif
  28.  
  29. #ifndef __TRAPS__
  30. #include <Traps.h>
  31. #endif
  32.  
  33. #ifndef __EVENTS__
  34. #include <Events.h>
  35. #endif
  36.  
  37. #ifndef __EPPC_
  38. #include <EPPC.h>
  39. #endif
  40.  
  41. #ifndef __APPLEEVENTS__
  42. #include <AppleEvents.h>
  43. #endif
  44.  
  45. #ifndef __OCE__
  46. #include <OCE.h>
  47. #endif
  48.  
  49. #ifndef __OCEMAIL__
  50. #include <OCEMail.h>
  51. #endif
  52.  
  53. #ifndef __OCEERRORS__
  54. #include <OCEErrors.h>
  55. #endif
  56.  
  57. #include "const.h"
  58. #include "gwerrors.h"
  59. #include "globals.h"
  60. #include "mytypes.h"
  61. #include "utils.h"
  62. #include "gatewayevents.h"
  63. #include "gatewayget.h"
  64. #include "gatewayput.h"
  65. #include "myevents.h"
  66.  
  67.  
  68. // HandleEvent
  69. //
  70. // called when WaitNextEvent gets an event that we need to process.  we're only a
  71. // background only application, so we just process high level events
  72. //
  73. // input: ev    event record returned from WaitNextEvent
  74. //
  75. OSErr HandleEvent(EventRecord *ev,Boolean inMainEventLoop)
  76. {
  77.     OSErr err = noErr;
  78.     
  79.     // we only handle high level events...
  80.     
  81.     switch (ev->what) {
  82.         case kHighLevelEvent:
  83.             err = DoHighLevelEvent(ev,inMainEventLoop);
  84.             break;
  85.     }
  86.     
  87.     return err;
  88. }
  89.  
  90.  
  91. // DoHighLevelEvent
  92. //
  93. // called to process high level events.  we accept both core appleevents and AOCE events
  94. //
  95. // input:    ev    event record returned from WaitNextEvent
  96. //
  97. OSErr DoHighLevelEvent(EventRecord *ev,Boolean inMainEventLoop)
  98. {
  99.     OSErr err;
  100.     TargetID sender;
  101.     OSType messageID;
  102.     short slotID;
  103.     unsigned long refCon;
  104.     unsigned long msgLen;
  105.     Ptr buff;
  106.     MailEPPCMsg *mailEPPC;
  107.     
  108.     msgLen = 0;
  109.     buff = nil;
  110.     
  111.     err = AcceptHighLevelEvent(&sender,&refCon,buff,&msgLen);
  112.     if (err==bufferIsSmall) {
  113.         buff = NewPtrChk(msgLen);
  114.         if (MemError()!=noErr)
  115.             return MemError();
  116.         err = AcceptHighLevelEvent(&sender,&refCon,buff,&msgLen);
  117.     }
  118.     
  119.     if (err!=noErr)
  120.         return err;
  121.     
  122.     messageID = * (unsigned long *) &ev->where;
  123.     
  124.     switch (ev->message) {
  125.         case kMailAppleMailCreator:
  126.             mailEPPC = (MailEPPCMsg *) buff;
  127.             slotID = ev->modifiers;
  128.             err = DoGatewayEvent(messageID,mailEPPC,slotID,inMainEventLoop);
  129.             break;
  130.         case kCoreEventClass:
  131.             err = HandleCoreEvents(messageID,buff,msgLen);
  132.         default:
  133.             break;
  134.     }
  135.     
  136.     DisposPtrChk(buff);
  137.     return err;
  138. }
  139.  
  140.  
  141. // HandleCoreEvents
  142. //
  143. // handles core appleevents.  we handle these directly rather than using the appleevent
  144. // dispatching mechanism.  note that we're really only handling quit.
  145. //
  146. // input:    messageID    type of event
  147. //            buff        high level event message buffer
  148. //            msgLen        high level event message length
  149. //
  150. OSErr HandleCoreEvents(long messageID,Ptr buff,unsigned long msgLen)
  151. {
  152.     #pragma unused (buff,msgLen)
  153.     OSErr err = noErr;
  154.     
  155.     switch (messageID) {
  156.         case kAEOpenApplication:
  157.             break;
  158.         case kAEOpenDocuments:
  159.             break;
  160.         case kAEPrintDocuments:
  161.             break;
  162.         case kAEQuitApplication:
  163.             err = ShutDownServer();
  164.             break;
  165.     }
  166.     return err;
  167. }